package com.itany.corejava.code16_反射;

import java.lang.reflect.Modifier;
import java.util.Arrays;

/**
 * @author MissChen
 * @version 1.0
 * @date 2023 年12月18日 10:54
 */
public class Test02_常用方法 {
    public static void main(String[] args) {


        Class c=User.class;

        //获取包名.类名
        System.out.println("类全名:"+c.getName());

        //获取类名
        System.out.println("类名:"+c.getSimpleName());

        //获取实现的接口
        System.out.println("实现的接口:"+ Arrays.toString(c.getInterfaces()));


        //获取父类，如果没有继承任何类，父类为Object
        System.out.println("获取父类:"+c.getSuperclass());


        //获取当前类所在的包名
        System.out.println("包名:"+c.getPackage());
        System.out.println("包名:"+c.getPackage().getName());

        //判断当前类是否是接口
        System.out.println("是否是接口:"+c.isInterface());
        System.out.println("是否是接口:"+B.class.isInterface());

        //返回当前类的修饰符
        int i=c.getModifiers();
        System.out.println(i);

        //通过Modifier提供的toString(int i)方法获取具体的修饰符
        String modifier=Modifier.toString(i);
        System.out.println(modifier);

        try {
            Object obj= c.newInstance();
            System.out.println(obj);
            System.out.println(obj instanceof  User);
        } catch (InstantiationException e) {
            e.printStackTrace();
            System.out.println("实例化异常，该类没有无参的构造方法");
        } catch (IllegalAccessException e) {
            e.printStackTrace();
            System.out.println("非法访问异常，无参构造不能被外部访问，此时无参构造属于私有方法");
        }



    }

}
interface B{}
